#pragma once

#include <NVMeCommon.hpp>
#include <sdbusplus/asio/connection.hpp>
#include <sdbusplus/asio/object_server.hpp>

#include <string>

class NVMeInfo
{
  public:
    NVMeInfo(sdbusplus::asio::object_server& objectServer,
             std::shared_ptr<sdbusplus::asio::connection>& conn,
             const std::string& sensorName, const std::string& filePath);

    std::shared_ptr<sdbusplus::asio::dbus_interface> nvmeinfoInterface;
    std::shared_ptr<sdbusplus::asio::dbus_interface> nvmeverInterface;

    void updateNVMeInfo(bool basicNVMeInfoState, bool vpdNVMeInfoState,
                        NVMeData* nvmeData);

  private:
    sdbusplus::asio::object_server& objServer;
    std::shared_ptr<sdbusplus::asio::connection> conn;
    bool basicNVMeInfoState = false;
    bool vpdNVMeInfoState = false;
    std::string sensorName;
    std::string filePath;
};
